home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’97 / Warrior’s Progress / source code / Source / Libraries / Buffers / ConstBufferOf.h < prev    next >
Encoding:
Text File  |  1997-06-28  |  1.3 KB  |  53 lines  |  [TEXT/CWIE]

  1. // ConstBufferOf.h
  2.  
  3. #ifndef ConstBufferOf_h
  4. #define ConstBufferOf_h
  5.  
  6. #ifndef ArrayOf_h
  7. #include "ArrayOf.h"
  8. #endif
  9.  
  10. template < class Element > class BufferOf;
  11.  
  12. template < class Element >
  13. class ConstBufferOf
  14.   {
  15.     typedef ArrayOf<Element> ArrayType;
  16.     typedef ConstArrayOf<Element> ConstArrayType;
  17.  
  18.     typedef BufferOf<Element> BufferType;
  19.     typedef ConstBufferOf<Element> ConstBufferType;
  20.     
  21.     private:
  22.         ConstArrayType space;
  23.         ConstArrayType unused;
  24.     
  25.         // not implemented:
  26.             ConstBufferOf( const ConstBufferType& );
  27.             void operator=( const ConstBufferType& );
  28.         
  29.     public:
  30.         ConstBufferOf( ConstArrayType );
  31.         
  32.         void Reset()                                    { unused = space; }
  33.         void Reset( ConstArrayType );
  34.  
  35.         inline void AdvanceMark( uint32 amount )
  36.                                                             { unused = unused.Tail( amount ); }
  37.         
  38.         ConstArrayType Used() const                { return space.Head( UsedLength() ); }
  39.         const ConstArrayType& Unused() const    { return unused; }
  40.         
  41.         uint32 TotalLength() const                    { return space.Length(); }
  42.         uint32 UsedLength() const                    { return space.Length() - unused.Length(); }
  43.         uint32 UnusedLength() const                { return unused.Length(); }
  44.         
  45.         bool IsUnused() const                        { return unused.Length() == space.Length(); }
  46.         bool Exhausted() const                        { return unused.IsEmpty(); }
  47.         
  48.         void operator>>( ArrayType );
  49.         void operator>>( BufferType& );
  50.   };
  51.  
  52. #endif
  53.